<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>RaftLib: pool_schedule Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">RaftLib
   &#160;<span id="projectnumber">0.3a</span>
   </div>
   <div id="projectbrief">C++ Stream Processing Template Library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classpool__schedule-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">pool_schedule Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for pool_schedule:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classpool__schedule__inherit__graph.svg" width="118" height="118"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for pool_schedule:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="classpool__schedule__coll__graph.svg" width="100%" height="600"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
<center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a11da62ac9c7b4ea203198ac3bb7babb4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#a11da62ac9c7b4ea203198ac3bb7babb4">pool_schedule</a> (<a class="el" href="class_map.html">Map</a> &amp;map)</td></tr>
<tr class="separator:a11da62ac9c7b4ea203198ac3bb7babb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a176ca5ea8ee742192b52660ecccc9290"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#a176ca5ea8ee742192b52660ecccc9290">~pool_schedule</a> ()</td></tr>
<tr class="separator:a176ca5ea8ee742192b52660ecccc9290"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab67558a44404e42ba032f799c0f424a7"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#ab67558a44404e42ba032f799c0f424a7">start</a> ()</td></tr>
<tr class="separator:ab67558a44404e42ba032f799c0f424a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_schedule"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_schedule')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_schedule.html">Schedule</a></td></tr>
<tr class="memitem:ad88c01f0ebf0c2f3bfa3ca2fe7ca3e8f inherit pub_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#ad88c01f0ebf0c2f3bfa3ca2fe7ca3e8f">Schedule</a> (<a class="el" href="class_map.html">Map</a> &amp;map)</td></tr>
<tr class="separator:ad88c01f0ebf0c2f3bfa3ca2fe7ca3e8f inherit pub_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4806b985197d35c00b9e707c0ed87998 inherit pub_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a4806b985197d35c00b9e707c0ed87998">~Schedule</a> ()</td></tr>
<tr class="separator:a4806b985197d35c00b9e707c0ed87998 inherit pub_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5180032a0c2135507859ccf2a4eea1ab inherit pub_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a5180032a0c2135507859ccf2a4eea1ab">init</a> ()</td></tr>
<tr class="separator:a5180032a0c2135507859ccf2a4eea1ab inherit pub_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a722f6e76c8b8dc67874d9974b6d641 inherit pub_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a6a722f6e76c8b8dc67874d9974b6d641">scheduleKernel</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const kernel)</td></tr>
<tr class="separator:a6a722f6e76c8b8dc67874d9974b6d641 inherit pub_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:aa5ec97e860a94aa17f33a0562fe942ce"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#aa5ec97e860a94aa17f33a0562fe942ce">scheduleKernel</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const kernel)</td></tr>
<tr class="separator:aa5ec97e860a94aa17f33a0562fe942ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_class_schedule"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_class_schedule')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="class_schedule.html">Schedule</a></td></tr>
<tr class="memitem:addff3f2e72caab274963cc888faa2f6b inherit pro_methods_class_schedule"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="addff3f2e72caab274963cc888faa2f6b"></a>
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>handleSchedule</b> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const kernel)=0</td></tr>
<tr class="separator:addff3f2e72caab274963cc888faa2f6b inherit pro_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
Static Protected Member Functions</h2></td></tr>
<tr class="memitem:a962f811570635fb9a9ec13c1bbcf2923"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#a962f811570635fb9a9ec13c1bbcf2923">container_min_input</a> (<a class="el" href="classkernel__container.html">kernel_container</a> *const a, <a class="el" href="classkernel__container.html">kernel_container</a> *const b)</td></tr>
<tr class="separator:a962f811570635fb9a9ec13c1bbcf2923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cef61efbff4cd4f0b2834fa1d8448cd"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#a9cef61efbff4cd4f0b2834fa1d8448cd">container_min_output</a> (<a class="el" href="classkernel__container.html">kernel_container</a> *const a, <a class="el" href="classkernel__container.html">kernel_container</a> *const b)</td></tr>
<tr class="separator:a9cef61efbff4cd4f0b2834fa1d8448cd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_static_methods_class_schedule"><td colspan="2" onclick="javascript:toggleInherit('pro_static_methods_class_schedule')"><img src="closed.png" alt="-"/>&#160;Static Protected Member Functions inherited from <a class="el" href="class_schedule.html">Schedule</a></td></tr>
<tr class="memitem:a85de3d48407aa378ccc86a4a4206b32a inherit pro_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">static raft::kstatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a85de3d48407aa378ccc86a4a4206b32a">checkSystemSignal</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const kernel, void *data, <a class="el" href="class_system_signal_handler.html">SystemSignalHandler</a> &amp;<a class="el" href="class_schedule.html#ad248e99611a87776fb411836cd46a603">handlers</a>)</td></tr>
<tr class="separator:a85de3d48407aa378ccc86a4a4206b32a inherit pro_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5167d622689a34ea5f3a065304295521 inherit pro_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">static raft::kstatus&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a5167d622689a34ea5f3a065304295521">quitHandler</a> (<a class="el" href="class_f_i_f_o.html">FIFO</a> &amp;fifo, <a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *kernel, const raft::signal signal, void *data)</td></tr>
<tr class="separator:a5167d622689a34ea5f3a065304295521 inherit pro_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3bf10fd9419c58849d7be98336dc0aff inherit pro_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bf10fd9419c58849d7be98336dc0aff"></a>
static void&#160;</td><td class="memItemRight" valign="bottom"><b>invalidateOutputPorts</b> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *kernel)</td></tr>
<tr class="separator:a3bf10fd9419c58849d7be98336dc0aff inherit pro_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac23de3dd63554401fd0d8d23b60eecfa inherit pro_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#ac23de3dd63554401fd0d8d23b60eecfa">kernelHasInputData</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *kernel)</td></tr>
<tr class="separator:ac23de3dd63554401fd0d8d23b60eecfa inherit pro_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e2035e0c0666054f8401ad2b3792854 inherit pro_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a2e2035e0c0666054f8401ad2b3792854">kernelHasNoInputPorts</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *kernel)</td></tr>
<tr class="separator:a2e2035e0c0666054f8401ad2b3792854 inherit pro_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:ad58df45d8f29a1a696338a2beb058b7c"><td class="memItemLeft" align="right" valign="top">const float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#ad58df45d8f29a1a696338a2beb058b7c">diff_weight</a> = .20</td></tr>
<tr class="separator:ad58df45d8f29a1a696338a2beb058b7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc11766f8ff9a29b21318bfcf81c815d"><td class="memItemLeft" align="right" valign="top">decltype(std::thread::hardware_concurrency()) const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#adc11766f8ff9a29b21318bfcf81c815d">n_threads</a></td></tr>
<tr class="separator:adc11766f8ff9a29b21318bfcf81c815d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae13c48902fd23d0d8747978780731a04"><td class="memItemLeft" align="right" valign="top">std::vector&lt; std::thread * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#ae13c48902fd23d0d8747978780731a04">pool</a></td></tr>
<tr class="separator:ae13c48902fd23d0d8747978780731a04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06a6ffb1893da4d486e309f22fe3d83e"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classkernel__container.html">kernel_container</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpool__schedule.html#a06a6ffb1893da4d486e309f22fe3d83e">container</a></td></tr>
<tr class="separator:a06a6ffb1893da4d486e309f22fe3d83e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91f4b1e58cbbe08986c21d1286f3f98b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a91f4b1e58cbbe08986c21d1286f3f98b"></a>
std::size_t&#160;</td><td class="memItemRight" valign="bottom"><b>kernel_count</b> = 0</td></tr>
<tr class="separator:a91f4b1e58cbbe08986c21d1286f3f98b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7255a60e82c01a13c18ae69c8831f288"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7255a60e82c01a13c18ae69c8831f288"></a>
std::remove_reference&lt; decltype(container.end()) &gt;::type&#160;</td><td class="memItemRight" valign="bottom"><b>container_it</b></td></tr>
<tr class="separator:a7255a60e82c01a13c18ae69c8831f288"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_class_schedule"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_class_schedule')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="class_schedule.html">Schedule</a></td></tr>
<tr class="memitem:ad248e99611a87776fb411836cd46a603 inherit pro_attribs_class_schedule"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_system_signal_handler.html">SystemSignalHandler</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#ad248e99611a87776fb411836cd46a603">handlers</a></td></tr>
<tr class="separator:ad248e99611a87776fb411836cd46a603 inherit pro_attribs_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1a448b0d48e656f94db65a70cedd8eed inherit pro_attribs_class_schedule"><td class="memItemLeft" align="right" valign="top">kernelkeeper &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#a1a448b0d48e656f94db65a70cedd8eed">kernel_set</a></td></tr>
<tr class="separator:a1a448b0d48e656f94db65a70cedd8eed inherit pro_attribs_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4c895eb77d8287a9a19215cced7af7b inherit pro_attribs_class_schedule"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4c895eb77d8287a9a19215cced7af7b"></a>
kernelkeeper &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>source_kernels</b></td></tr>
<tr class="separator:ad4c895eb77d8287a9a19215cced7af7b inherit pro_attribs_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebf2c26334eae760032d82a016898043 inherit pro_attribs_class_schedule"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aebf2c26334eae760032d82a016898043"></a>
kernelkeeper &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>dst_kernels</b></td></tr>
<tr class="separator:aebf2c26334eae760032d82a016898043 inherit pro_attribs_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pub_static_methods_class_schedule"><td colspan="2" onclick="javascript:toggleInherit('pub_static_methods_class_schedule')"><img src="closed.png" alt="-"/>&#160;Static Public Member Functions inherited from <a class="el" href="class_schedule.html">Schedule</a></td></tr>
<tr class="memitem:acf28b4a4231e693585751a035873615c inherit pub_static_methods_class_schedule"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_schedule.html#acf28b4a4231e693585751a035873615c">kernelRun</a> (<a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const kernel, volatile bool &amp;finished, jmp_buf *gotostate=nullptr, jmp_buf *kernel_state=nullptr)</td></tr>
<tr class="separator:acf28b4a4231e693585751a035873615c inherit pub_static_methods_class_schedule"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a11da62ac9c7b4ea203198ac3bb7babb4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">pool_schedule::pool_schedule </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_map.html">Map</a> &amp;&#160;</td>
          <td class="paramname"><em>map</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><a class="el" href="classpool__schedule.html">pool_schedule</a> - constructor, takes a map object, calling this will launch threads. scheduler itself is also run as a thread. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">map</td><td>- <a class="el" href="class_map.html">Map</a>&amp;</td></tr>
  </table>
  </dd>
</dl>
<p>poolschedule.cpp - </p><dl class="section author"><dt>Author</dt><dd>: Jonathan Beard </dd></dl>
<dl class="section version"><dt>Version</dt><dd>: Thu Sep 11 15:49:57 2014</dd></dl>
<p>Copyright 2014 Jonathan Beard</p>
<p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:</p>
<p><a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a></p>
<p>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. </p>
<p>initialize container objects</p>
<p>initialize threads </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 0 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a176ca5ea8ee742192b52660ecccc9290"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pool_schedule::~pool_schedule </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>destructor, deletes threads and cleans up container objects. </p>
<p>join threads</p>
<p>delete threads</p>
<p>delete containers </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a962f811570635fb9a9ec13c1bbcf2923"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pool_schedule::container_min_input </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classkernel__container.html">kernel_container</a> *const&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classkernel__container.html">kernel_container</a> *const&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>container_min - returns true if the input queue of a has fewer items than the input queue of b </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classkernel__container.html">kernel_container</a> * const </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classkernel__container.html">kernel_container</a> * const </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bool - true if a-&gt;qsize() &lt; b-&gt;qsize() </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 1 -->
</div>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 2 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="a9cef61efbff4cd4f0b2834fa1d8448cd"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pool_schedule::container_min_output </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classkernel__container.html">kernel_container</a> *const&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classkernel__container.html">kernel_container</a> *const&#160;</td>
          <td class="paramname"><em>b</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>container_max - returns true if the output queue of a is greater than b. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>- <a class="el" href="classkernel__container.html">kernel_container</a> * const </td></tr>
    <tr><td class="paramname">b</td><td>- <a class="el" href="classkernel__container.html">kernel_container</a> * const </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bool - true if a-&gt;outqsize &gt; b-&gt;qoutsize </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 3 -->
</div>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 4 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="aa5ec97e860a94aa17f33a0562fe942ce"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pool_schedule::scheduleKernel </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classraft_1_1kernel.html">raft::kernel</a> *const&#160;</td>
          <td class="paramname"><em>kernel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>BEGIN FUNCTIONS scheduleKernel - override base class function in order to add kernels to the right place. </p><dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">kernel</td><td>- <a class="el" href="classraft_1_1kernel.html">raft::kernel</a>* </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bool - always true </dd></dl>
<p>get a container </p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><!-- SVG 5 -->
</div>
</div>
</p>

</div>
</div>
<a class="anchor" id="ab67558a44404e42ba032f799c0f424a7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void pool_schedule::start </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>start - call to start executing map, at this point the mapper sould have checked the topology and everything should be set up for running. </p>
<p>we want to get the max queue occupancy</p>
<p>some message exists</p>
<p>remove kernel</p>
<p>all done, shutdown </p>

<p>Implements <a class="el" href="class_schedule.html#ab6ad5540ecdef6b472b4e8242a47c4ee">Schedule</a>.</p>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="classpool__schedule_ab67558a44404e42ba032f799c0f424a7_cgraph.svg" width="507" height="123"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a06a6ffb1893da4d486e309f22fe3d83e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; <a class="el" href="classkernel__container.html">kernel_container</a>* &gt; pool_schedule::container</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>max_heap_container - sorted by max output-queue occupancy </p>

</div>
</div>
<a class="anchor" id="ad58df45d8f29a1a696338a2beb058b7c"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">const float pool_schedule::diff_weight = .20</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>END FUNCTIONS, BEGIN VAR DECLS The thread has to have this much more "work" than the previous thread in order to get moved ot a new thread. Used in <a class="el" href="classpool__schedule.html#ab67558a44404e42ba032f799c0f424a7">pool_schedule::start()</a>. </p>

</div>
</div>
<a class="anchor" id="adc11766f8ff9a29b21318bfcf81c815d"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">decltype( std::thread::hardware_concurrency() ) const pool_schedule::n_threads</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>total # of hardware supported threads </p>

</div>
</div>
<a class="anchor" id="ae13c48902fd23d0d8747978780731a04"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::vector&lt; std::thread* &gt; pool_schedule::pool</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>used as a thread pool </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="poolschedule_8hpp_source.html">poolschedule.hpp</a></li>
<li>poolschedule.cpp</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Mon Oct 12 2015 12:16:50 for RaftLib by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
